home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / TurboTCP 1.0.1 / TurboTCP.source / CTCPSessionDoc.h < prev    next >
Text File  |  1993-12-10  |  4KB  |  124 lines

  1. /*
  2. ** CTCPSessionDoc.h
  3. **
  4. **    TurboTCP support library
  5. **    TCP session document
  6. **
  7. **    Copyright © 1993, FrostByte Design / Eric Scouten
  8. **
  9. */
  10.  
  11.  
  12. #pragma once
  13.  
  14. #ifndef TurboTCPHeaders
  15.     #include <CDocument.h>
  16.     #include <MacTCPCommonTypes.h>
  17. #endif
  18.  
  19. CLASS CTCPStream;
  20. CLASS CTCPResolverCall;
  21.  
  22.  
  23. /*______________________________________________________________________
  24. **
  25. ** CTCPSessionDoc
  26. **
  27. **    This abstract class is provided to link the TCL CDocument class with the TurboTCP
  28. **    CTCPStream class. View this as a “connection session” document; this is the point at
  29. **    which the user interaction with the TCP session is handled.
  30. **
  31. **    This class provides all of the necessary behaviors for opening and closing a session.
  32. **    It provides abstract methods for receiving data and handling various TCP notifications.
  33. **    By default, it sets the window title to the name of the remote host. You may also
  34. **    configure it to show the document’s filename, both hostname & filename, or neither.
  35. **    (See the fields showFileName and showHostName and the method AutoTitle.
  36. **
  37. **    This class does not implement any specific TCP protocol. You will need to subclass it
  38. **    to provide the behaviors specific to the protocol you are implementing. You may want
  39. **    to examine and use the CTelnetInterpreter class to see how this may be done.
  40. **
  41. **    NOTE: This class is provided only as a convenience. You need not include it in your project.
  42. **
  43. */
  44.  
  45.  
  46. class CTCPSessionDoc : public CDocument {
  47.  
  48.     // informational fields — don’t change these
  49.     
  50. public:
  51.     CTCPStream        *itsStream;                // TCP stream for this document
  52.     CTCPResolverCall    *itsResolver;                // TCP resolver for this document
  53. protected:
  54.     Boolean            pendingOpenByName;            // OpenUserHost has been issued
  55.     b_16                pendingPortNumber;            // port number for OpenUserHost
  56.     Boolean            closeAndQuit;                // closing windows to quit
  57.     Boolean            sessionReady;                // connection is open; can accept data
  58.     
  59.     char                hostCName [256];            // canonical name of host
  60.                                             //    if cnames not requested, is user’s name
  61.     ip_addr            hostAddress;                // IP address of host
  62.     b_16                defaultPort;                // default port number
  63.     b_16                actualPort;                // current port number
  64.     
  65.     // configuration fields — your subclass may change these variables
  66.     
  67.     Boolean            useCName;                // get host’s canonical name
  68.     Boolean            goAwayOnClose;            // close window when session closes
  69.     Boolean            showFileName;                // show filename in window titles
  70.     Boolean            showHostName;                // show host name in window titles
  71.     short            untitledNumber;            // serial number for untitled document
  72.  
  73.  
  74.     // construction/destruction
  75.     
  76. public:
  77.     void ITCPSessionDoc (CApplication *aSupervisor, Boolean printable, long rcvBufferSize,
  78.                     b_16 theDefaultPort, Boolean doUseCName, short autoReceiveSize,
  79.                     short autoReceiveNum);
  80.     virtual void Dispose (void);
  81.  
  82.  
  83.     // opening/closing session
  84.  
  85.     virtual void OpenUserHost (char *theHostName, b_16 theDefaultPort, Boolean allowPortChange);
  86.     virtual Boolean Close (Boolean quitting);
  87.  
  88.  
  89.     // document/window naming
  90.  
  91.     virtual void AutoTitle (void);
  92.     virtual void GetName (Str255 theName);
  93.     virtual Boolean SessionEstablished (void);
  94.  
  95.  
  96.     // special error handling
  97.     
  98.     virtual short TCPErrorAlert (OSErr err, long message, short alertID, short parm3);
  99.  
  100.  
  101.     // TCP/DNR notification routines
  102.  
  103.     virtual void ProviderChanged (CCollaborator *aProvider, long reason, void *info);
  104. protected:
  105.     virtual void HandleClosed (void);
  106.     virtual void HandleClosing (Boolean remoteClosing);
  107.     virtual void HandleDataArrived (Ptr theData, b_16 theDataSize, Boolean isUrgent);
  108.     virtual void HandleDataSent (wdsEntry *WDSPtr);
  109.     virtual void HandleICMP (struct ICMPReport *icmpMsg);
  110.     virtual void HandleOpened (void);
  111.     virtual void HandleOpenFailed (OSErr theResultCode);
  112.     virtual void HandleSendFailed (wdsEntry *WDSPtr, OSErr theResultCode);
  113.     virtual void HandleTCPError (OSErr theResultCode, short theCsCode);
  114.     virtual void HandleTerminated (b_16 terminReason, Boolean aboutToDispose);
  115.     virtual void HandleTimeout (void);
  116.     virtual void HandleUnexpectedData (void);
  117.     virtual void HandleUrgentBegin (void);
  118.  
  119.     virtual void HandleStrToAddr (struct hostInfo *theHostInfo);
  120.     virtual void HandleAddrToName (struct hostInfo *theHostInfo);
  121.     virtual void HandleHInfo (struct returnRec *theHInfo);
  122.     virtual void HandleMXInfo (struct returnRec *theMXInfo);
  123.     
  124. };